home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1995 March / PC Plus Super CD (Issue 101) (March 1995).iso / pcplus / superdsk / wilfwork / julian.bas
Encoding:
BASIC Source File  |  1995-02-28  |  2.2 KB  |  74 lines

  1. 1000 DEFINT I-M: KEY OFF: SCREEN 9: COLOR 8, 11
  2. 1010 CLS : CLEAR : RANDOMIZE TIMER
  3. 1020 GOSUB 10000
  4. 1030 GOTO 20000
  5. 10000 '****************
  6. 10010 ' DATE CALCULATION SUITE
  7. 10020 '
  8. 10030 '   GOSUB 11000: convert DD%,MM%,YY% to JULIAN%
  9. 10040 '   GOSUB 11500: convert JULIAN% to DD%,MM%,YY%
  10. 10050 '   GOSUB 12000: derive DAY$ (from JULIAN%)
  11. 10060 '   GOSUB 12500: derive ORDINAL$ (from DD%)
  12. 10070 '   GOSUB 13000: derive MONTH$ (from MM%)
  13. 10080 '
  14. 10090 ' Set up tables for other functions
  15. 10100 '
  16. 10110 DIM DAYS$(6)
  17. 10120 DATA "Sun","Mon","Tues","Wednes","Thurs","Fri","Satur"
  18. 10130 FOR I% = 0 TO 6
  19. 10140  READ DAYS$(I%)
  20. 10150 NEXT
  21. 10160 DIM MONTHS$(12)
  22. 10170 DATA "January","February","March","April","May","June"
  23. 10180 DATA "July","August","September","October","November","December"
  24. 10190 FOR I% = 1 TO 12
  25. 10200  READ MONTHS$(I%)
  26. 10210 NEXT
  27. 10220 RETURN
  28. 11000 '****************
  29. 11010 ' Convert DD%, MM% and YY% to JULIAN%
  30. 11020 '
  31. 11030 LCLA% = VAL(MID$("120112234455", MM%, 1))
  32. 11040 JULIAN% = (YY% - 90) * 365 + INT(YY% / 4) + MM% * 30 + LCLA% + DD% - 53
  33. 11050 IF (YY% AND 3) = 0 AND MM% < 3 THEN JULIAN% = JULIAN% - 1
  34. 11060 RETURN
  35. 11500 '*****************
  36. 11510 ' Convert JULIAN% to DD%, MM% and YY%
  37. 11520 '
  38. 11530 YY% = 90 + INT((4 * JULIAN% - 2) / 1461)
  39. 11540 LCLB% = JULIAN%
  40. 11550 JULIAN% = JULIAN% + 1
  41. 11560 DD% = 1
  42. 11570 MM% = 13
  43. 11580 WHILE LCLB% < JULIAN%
  44. 11590  MM% = MM% - 1
  45. 11600  GOSUB 11000
  46. 11610 WEND
  47. 11620 DD% = LCLB% - JULIAN% + 1
  48. 11630 JULIAN% = LCLB%
  49. 11640 RETURN
  50. 12000 '*****************
  51. 12010 ' Derive DAY$ from JULIAN%
  52. 12020 '
  53. 12030 DAY$ = DAYS$(JULIAN% MOD 7) + "day"
  54. 12040 RETURN
  55. 12500 '*****************
  56. 12510 ' Derive ORDINAL$ from DD%
  57. 12520 '
  58. 12530 ORDINAL$ = "th"
  59. 12540 IF DD% MOD 10 = 1 THEN ORDINAL$ = "st"
  60. 12550 IF DD% MOD 10 = 2 THEN ORDINAL$ = "nd"
  61. 12560 IF DD% MOD 10 = 3 THEN ORDINAL$ = "rd"
  62. 12570 IF DD% > 10 AND DD% < 14 THEN ORDINAL$ = "th"
  63. 12580 ORDINAL$ = MID$(STR$(DD%), 2) + ORDINAL$
  64. 12590 RETURN
  65. 13000 '*****************
  66. 13010 ' Derive MONTH$ from MM%
  67. 13020 '
  68. 13030 MONTH$ = MONTHS$(MM%)
  69. 13040 RETURN
  70. 20000 '**********************
  71. 20010 '**  PROGRAM PROPER  **
  72. 20020 '**********************
  73.  
  74.